// 各种用法说明参考文件：
// src/main/scala/com/bart/scala/ch06/5_constructor.sc

//1）对象私有字段。如果没有方法使用name，则没有该字段
class Person0(name: String = "", age: Int = 0)
val p0 = new Person0("A", 19)
//println(p0.name)
//println(p0.age)
// 报错，因为变量没有被val或者var修饰就认为是私有的


// 2）val/var name: String
// 私有字段，公有的getter/setter方法（常用）
class Person1(var name: String = "", val age: Int = 0)
val p1 = new Person1("A", 19)
println(p1.name) // A
println(p1.age) // 19

// 3）继承
// 1) 父类、子类字段都没有被 val/var 修饰
class Person2(name: String = "")
class Student0(name: String = "") extends Person2(name)

val s0 = new Student0("B")
//println(s0.name) // 报错，因为 Student0 name没有被var/val修饰

// 2)子类字段都被 val/var 修饰，父类没有
class Student1(val name: String = "") extends Person2(name)
val s1 = new Student1("B")
println(s1.name) // B

// 3) 子类字段没有被 val/var 修饰，父类有
class Person3(val name: String = "")
class Student2(name: String = "") extends Person3(name)
val s2 = new Student2("B")
println(s2.name) // B

